package com.explorati.interview.interview.chapterfifteen;

//冒泡排序
public class BubbleSort {

	// 算法实现
	public static void bubbleSort(int[] arr) {
		// 控制循环次数
		for (int i = 0; i < arr.length - 1; i++) {
			int temp = 0;
			// 从后到前遍历，如果后一个大于前一个，就向前移动一位
			for (int j = arr.length - 1; j > i; j--) {
				if (arr[j] > arr[j - 1]) {
					temp = arr[j];
					arr[j] = arr[j - 1];
					arr[j - 1] = temp;
				}
			}
		}
	}

	public static void bubbleSort1(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			int temp = 0;
			for (int j = 0; j < arr.length - i - 1; j++) {
				// 如果后一个小于前一个，就把大的数放后面
				if (arr[j] > arr[j + 1]) {
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}

//	public static void bubbleSort2(int[] arr) {
//		for (int i = 0; i < arr.length - 1; i++) {
//			for (int j = 1; j <= arr.length - 1 - i; j++) {
//				if (arr[j] < arr[j - 1]) {
//					swap(arr[j], arr[j - 1]);
//				}
//			}
//		}
//	}
//
//	public static void swap(int i, int j) {
//		int temp = i;
//		i = j;
//		j = temp;
//	}

	public static void main(String[] args) {
		int[] arr = { 4, 3, 52, 12, 53, 56, 78 };
		bubbleSort(arr);
		for (int i : arr) {
			System.out.print(i + "\t");
		}

		System.out.println();

		int[] arr1 = { 4, 3, 52, 12, 53, 56, 78 };
		bubbleSort1(arr1);
		for (int i : arr1) {
			System.out.print(i + "\t");
		}

		System.out.println();

//		int[] arr2 = { 4, 3, 52, 12, 53, 56, 78 };
//		bubbleSort2(arr2);
//		for (int i : arr2) {
//			System.out.print(i + "\t");
//		}
	}
}
